<?php

class archivo{

  public $rutaCompleta;
  public $nomDirectorio;
  public $nombre;
  public $tamano;
  public $extension;

  public function archivo($rutaCompleta){

    if(is_file($rutaCompleta)){

      $this->rutaCompleta = $rutaCompleta;
      $infoArch = pathinfo($rutaCompleta);
      $this->nomDirectorio = $infoArch['dirname'];
      $this->nombre = $infoArch['filename'];
      $this->tamano = filesize($rutaCompleta);
      $this->extension = $infoArch['extension'];

    }

  }

}

class directorio{

  public $ruta;
  public $rutaPadre;
  public $archivos = array();
  public $directorios = array();
  public $nombre;
  private $nivelRecursividad;

  public function directorio($ruta,$nivelRecursividad=0){

    if(is_dir($ruta)){

      $this->ruta = $ruta;
      $this->rutaPadre = dirname($ruta);
      $this->nombre = basename($ruta);
      $this->nivelRecursividad = $nivelRecursividad;

      if($nomArchivos = scandir($ruta)){

        foreach($nomArchivos as $nomArch){
          if ($nomArch != "." && $nomArch != ".."){
            $rutaTemp = $ruta."/".$nomArch;
            if(is_dir($rutaTemp)){
              if($this->nivelRecursividad > 0){
                $this->directorios[] = new directorio($rutaTemp,$nivelRecursividad-1);
              }
              else{
                $this->directorios[] = $nomArch;
              }
            }
            else{
              if(is_file($rutaTemp)){
                $this->archivos[] = new archivo($rutaTemp);
              }
            }
          }
        }

      }
    }
  }

  public function existeArchivo($nombre='',$extension=''){
    if($nombre=='' and $extension==''){
      return false;
    }
    if(!empty($this->archivos)){
      foreach($this->archivos as $arch){
        //Busqueda por nombre y archivo
        if($nombre!='' and $extension!=''){
          if($arch->nombre == $nombre and $arch->extension == $extension){
            return $arch;
          }
        }
        else{
          //Busqueda por nombre
          if($nombre!=''){
            if($arch->nombre == $nombre){
              return true;
            }
          }
          else{
            //Busqueda por extension
            if($arch->extension == $extension){
              return true;
            }
          }
        }
      }
    }
    else{
      return false;
    }
  }

}

?>